﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WimaxSimulator.Wimax
{
    public interface ISuperordinate
    {
        int AvaliableBandwidth { get; }
        int TotalSubordinateMS { get; }
        Cidr IpAddressBlock { get; set; }
        List<Cidr> IpAddressAssignment { get; }
        List<ISubordinate> Subordinates { get; }
        Dictionary<ISubordinate,Queue<Packet>> DownlinkQueue{ get; }
        MCS MinMCS { get; set; }
        uint Connect(ISubordinate subordinateStation);
        int DownlinkBandwidth { get; set; }
        bool BandwidthRequest(int bandwidth,bool relay);
        void ReturnBandwidth(int bandwidth);
        void Disconnect(RelayStation relayStation,Cidr addressBlock);
        int Congestion { get; }
        void Disconnect(MobileStation mobileStation);
        bool IsMySuper(ISuperordinate superOrdinate);
    }
}
